<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>后台管理-登录</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta http-equiv="Access-Control-Allow-Origin" content="*">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <meta name="apple-mobile-web-app-status-bar-style" content="black">
    <meta name="apple-mobile-web-app-capable" content="yes">
    <meta name="format-detection" content="telephone=no">
    <link rel="stylesheet" href="/static/admin/layuimini/lib/layui-v2.5.5/css/layui.css" media="all">
    <!--[if lt IE 9]>
    <script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
    <script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->
    <style>
        html, body {
            width: 100%;
            height: 100%;
            overflow: hidden
        }

        body {
            background: #009688;
        }

        body:after {
            content: '';
            background-repeat: no-repeat;
            background-size: cover;
            -webkit-filter: blur(3px);
            -moz-filter: blur(3px);
            -o-filter: blur(3px);
            -ms-filter: blur(3px);
            filter: blur(3px);
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            z-index: -1;
        }

        .layui-container {
            width: 100%;
            height: 100%;
            overflow: hidden
        }

        .admin-login-background {
            width: 360px;
            height: 300px;
            position: absolute;
            left: 50%;
            top: 40%;
            margin-left: -180px;
            margin-top: -100px;
        }

        .logo-title {
            text-align: center;
            letter-spacing: 2px;
            padding: 14px 0;
        }

        .logo-title h1 {
            color: #009688;
            font-size: 25px;
            font-weight: bold;
        }

        .login-form {
            background-color: #fff;
            border: 1px solid #fff;
            border-radius: 3px;
            padding: 14px 20px;
            box-shadow: 0 0 8px #eeeeee;
        }

        .login-form .layui-form-item {
            position: relative;
        }

        .login-form .layui-form-item label {
            position: absolute;
            left: 1px;
            top: 1px;
            width: 38px;
            line-height: 36px;
            text-align: center;
            color: #d2d2d2;
        }

        .login-form .layui-form-item input {
            padding-left: 36px;
        }

        .captcha {
            width: 60%;
            display: inline-block;
        }

        .captcha-img {
            display: inline-block;
            width: 34%;
            float: right;
        }

        .captcha-img img {
            height: 34px;
            border: 1px solid #e6e6e6;
            height: 36px;
            width: 100%;
        }
    </style>
</head>
<body>
<div class="layui-container">
    <div class="admin-login-background">
        <div class="layui-form login-form">
            <form class="layui-form" id="login-form" action="/admin/login">
                <div class="layui-form-item logo-title">
                    <h1>FantasyBlog后台登录</h1>
                </div>
                <div class="layui-form-item">
                    <label class="layui-icon layui-icon-username"></label>
                    <input type="text" name="username" lay-verify="required|account" placeholder="用户名或者邮箱"
                           autocomplete="off" class="layui-input" value="admin">
                </div>
                <div class="layui-form-item">
                    <label class="layui-icon layui-icon-password"></label>
                    <input type="password" name="password" lay-verify="required|password" placeholder="密码"
                           autocomplete="off" class="layui-input">
                </div>
                <div class="layui-inline">
                    <div class="layui-input-inline">
                        <input name="verCode" class="layui-input" lay-verify="required" placeholder="验证码" type="text">
                    </div>
                    <div class="layui-input-inline">
                        <img src="/admin/captcha" id="verCodeImg" width="120px" height="48px"/>
                    </div>
                </div>
                <div class="layui-form-item">
                    <input type="checkbox" name="remember-me" value="true" lay-skin="primary" title="记住密码" checked>
                </div>
                <div class="layui-form-item">
                    <button class="layui-btn layui-btn-fluid" lay-submit="" lay-filter="login">登 入</button>
                </div>
            </form>
        </div>
    </div>
</div>
<script charset="utf-8" src="/static/admin/layuimini/lib/jquery-3.4.1/jquery-3.4.1.min.js"></script>
<script charset="utf-8" src="/static/admin/layuimini/lib/layui-v2.5.5/layui.js"></script>
<script charset="utf-8" src="/static/admin/layuimini/lib/jq-module/jquery.particleground.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@9"></script>
<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.js"></script>
<script src="/static/admin/layuimini/js/jquery.cookie.js"></script>
<script>
    layui.use(['form','jquery'], function () {
        var $ = layui.jquery,
            form = layui.form,
            layer = layui.layer;

        //刷新验证码
        $('#verCodeImg').click(function flushVerCode() {
            this.src = this.src + "?" + Math.random();
        });

        // 登录过期的时候，跳出iframe框架
        if (top.location != self.location) top.location = self.location;

        // 粒子线条背景
        $(document).ready(function () {
            $('.layui-container').particleground({
                dotColor: '#5cbdaa',
                lineColor: '#5cbdaa'
            });
        });

        // 进行登录操作
        form.on('submit(login)', function (data) {
            data = data.field;
            if (data.username === '') {
                layer.msg('用户名不能为空');
                return false;
            }
            if (data.password === '') {
                layer.msg('密码不能为空');
                return false;
            }
            axios({
                method: 'post',
                url: '/admin/login',
                data: $("#login-form").serialize(),
                headers: {
                    'X-Requested-With': 'XMLHttpRequest',
                    // 'X-CSRFToken': $.cookie('XSRF-TOKEN')
                }
            }).then((response) => {
                let result = response.data;
                console.log(result)
                if (result.authenticated) {
                    localStorage.setItem("userId", result.principal.id);
                    localStorage.setItem("username", result.principal.username);
                    localStorage.setItem("nickname", result.principal.nickname);
                    localStorage.setItem("user", JSON.stringify(result.principal));
                    var authorities = result.authorities;
                    var permission = [];
                    for (var i in authorities) {
                        permission.push(authorities[i].authority);
                    }
                    localStorage.setItem("permission", JSON.stringify(permission));
                    Swal.fire({
                        toast: true,
                        position: 'center',
                        icon: 'success',
                        title: '登录成功!',
                        showConfirmButton: false,
                        timer: 2000,
                        timerProgressBar: true,
                        onClose: () => {
                            location.href = '/admin'
                        }
                    });
                } else {
                    let title = '';
                    if (result.message !== undefined) {
                        title = result.message;
                    } else {
                        title = '登录异常，请联系管理员';
                    }
                    let verCodeImg = $('#verCodeImg');
                    let src = verCodeImg.prop('src');
                    verCodeImg.prop('src', src + "?" + Math.random());
                    Swal.fire({
                        toast: true,
                        position: 'center',
                        icon: 'error',
                        title: title,
                        showConfirmButton: false,
                        timer: 2000,
                        timerProgressBar: true,
                    });
                }
            }).catch((error) => {
                let verCodeImg = $('#verCodeImg');
                let src = verCodeImg.prop('src');
                verCodeImg.prop('src', src + "?" + Math.random());
                Swal.fire({
                    toast: true,
                    position: 'center',
                    icon: 'error',
                    title: `${error.response.data.message}`,
                    showConfirmButton: false,
                    timer: 2000,
                    timerProgressBar: true,
                });
            })
            return false;
        });
    });
</script>
</body>
</html>